Portable data terminals (PDTs) such as laser indicia reading devices, optical indicia reading devices, barcode scanners and barcode readers, for example, typically read data represented by printed indicia such as symbols, symbology, and bar codes, for example. One type of symbol is an array of rectangular bars and spaces that are arranged in a specific way to represent elements of data in machine readable form. Optical indicia reading devices typically transmit light onto a symbol and receive light scattered and/or reflected back from a bar code symbol or indicia. The received light is interpreted by an image processor to extract the data represented by the symbol. Laser indicia reading devices typically utilize transmitted laser light. One-dimensional (1D) optical bar code readers are characterized by reading data that is encoded along a single axis, in the widths of bars and spaces, so that such symbols can be read from a single scan along that axis, provided that the symbol is imaged with a sufficiently high resolution.
In order to allow the encoding of larger amounts of data in a single bar code symbol, a number of one-dimensional (1D) stacked bar code symbologies have been developed which partition encoded data into multiple rows, each including a respective 1D bar code pattern, all or most all of which must be scanned and decoded, then linked together to form a complete message. Scanning still requires relatively higher resolution in one dimension only, but multiple linear scans are needed to read the whole symbol.
A class of bar code symbologies known as two-dimensional (2D) matrix symbologies have been developed which offer orientation-free scanning and greater data densities and capacities than 1D symbologies. 2D matrix codes encode data as dark or light data elements within a regular polygonal matrix, accompanied by graphical finder, orientation and reference structures.
Conventionally, a PDT includes a central processor which directly controls the operations of the various electrical components housed within the PDT. For example, the central processor controls detection of keypad entries, display features, wireless communication functions, trigger detection, and bar code read and decode functionality. More specifically, the central processor typically communicates with an illumination assembly configured to illuminate a target, such as a bar code, and an imaging assembly configured to receive an image of the target and generate an electric output signal indicative of the data optically encoded therein.
The output signal is generally representative of the pixel data transmitted by an image sensor of the imaging assembly. Because the pixel data may not be high enough quality for the processor to reliably decode the bar code in the image, PDTs generally successively capture images, or image frames, until a reliable decode is complete. Further, where the bar codes being decoded vary from 1D and 2D symbologies, the PDT generally sequentially executes decode algorithms for the multiple symbologies. This process can be time-intensive because the processor must wait for the pixel data to be stored in memory before it can access the data in order to execute a decode algorithm and then must further wait for a decode algorithm to complete before a second decode algorithm can execute. Further, in many settings such as warehouses, shopping centers, shipping centers, and numerous others, PDTs are used to decode bar codes in serial fashion such that a faster decode operation generally increases throughput.
Attempts have been made to increase decode speed particularly by multi-threading. Multi-threading, or hyper-threading, allows multiple threads to use a single processing unit by providing processor cycles to one thread when another thread incurs a latency such as a cache miss, for example, which would cause the processor to incur several cycles of idle time while off-chip memory is accessed. Using multi-threading, the central processor idle time is minimized but not substantially parallelized. Further, context switching between threads can significantly increase overhead, as the state of one process/thread is saved while another is loaded, further minimizing any efficiency gain.
Accordingly, there remains a need in the art for a PDT system architecture that will allow for faster, substantially parallel, bar code decoding operations.
It will be appreciated that for purposes of clarity and where deemed appropriate, reference numerals have been repeated in the figures to indicate corresponding features.